import { ref, computed } from "vue";
import { defineStore } from "pinia";
import axios from "axios";
import { ElMessage } from "element-plus";
// 可以引入其他模块
// import { rootSore } from "@/stores/rootState";

// Store 是使用 defineStore() 定义的，并且它需要一个唯一名称，作为第一个参数传递："myId""
export const useStore = defineStore("myId", {
  // state 推荐用箭头函数的方式 利于类型推断
  state: () => {
    return {
      data: [],
      pageData: [],
      ticketList: [],
      ticketDetail: [],
    };
  },
  // 计算属性
  // 请注意，在执行此操作时，getter 不再缓存，它们只是您调用的函数。 但是，您可以在 getter 本身内部缓存一些结果
  getters: {},

  /* actions Actions 相当于组件中的 methods，它非常适合定义业务逻辑
  注意：这里只能用常规函数 可以通过this进行访问store实例
  */
  actions: {
    // 初始化数据
    getList({ pageSize }) {
      axios.get("/getList").then((res) => {
        this.data = res.data.data;
        this.pageData = this.data.slice(0, pageSize);
      });
    },

    // 初始化车票数据
    getTicket() {
      axios.get("/api/ticketList").then((res) => {
        this.ticketList = res.data.data;
      });
    },

    // 分页
    page({ val, pageSize }) {
      this.pageData = this.data.slice((val - 1) * pageSize, val * 10);
    },

    // 搜索
    search(val) {
      const arr = [];
      const newArr = this.data.filter((item) => {
        if (item.startLocation.includes(val)) {
          return arr.push(item);
        }
      });
      this.pageData = newArr;
    },

    // 搜索
    searchNum(val) {
      console.log(val);
      const arr = [];
      const newArr = this.data.filter((item) => {
        console.log();
        if (String(item.orderNum).includes(val)) {
          return arr.push(item);
        }
      });
      this.pageData = newArr;
    },

    // 删除
    del({ id, index, currentPage, pageSize }) {
      console.log(id, index);
      // this.pageData.splice(index,1)

      let ind = this.data.findIndex((item) => item.id === id);
      // console.log(ind);
      this.data.splice(ind, 1);
      // 根绝最新的页码获取每页的数据
      this.pageData = this.data.slice(
        (currentPage - 1) * pageSize,
        currentPage * pageSize
      );
      // 成功提示
      ElMessage({
        message: "删除成功",
        type: "success",
      });
    },

    // 编辑
    edit({ val, values }) {
      const newStr = { ...values.value, startLocation: val };
      // console.log(newStr);
      this.pageData.forEach((item, index) => {
        if (item.id == newStr.id) {
          this.pageData[index] = newStr;
        }
      });
    },

    // 提交
    submit({ val, val1, val2, val3, val4, val5, val6 }) {
      console.log(val, val1, val2, val3, val4, val5, val6);
      this.ticketDetail.push({
        id: new Date().getTime(),
        startDate: val2,
        type: val3,
        car: val1,
        startLocation: val3,
        endLocation: val4,
        startTime: val5,
        endTime: val6,
        price: "120",
        number: "02车09A号",
        sitType: "商务座",
        status: true,
      });
      // console.log(this.ticketDetail);
    },

    // 全选
    checkAll() {
      this.pageData.forEach((item, index) => {
        item.checked = !item.checked;
      });
    },

  },
});
